package com.blog.blog.service;

import com.blog.blog.vo.OssFileVO;
import java.util.List;

/**
 * 数据备份服务接口
 */
public interface BackupService {
    
    /**
     * 执行数据库备份并上传到OSS
     * @return OSS文件信息
     */
    OssFileVO backupDatabase();
    
    /**
     * 执行文件备份并上传到OSS（上传的文件、图片等）
     * @return OSS文件信息
     */
    OssFileVO backupFiles();
    
    /**
     * 执行完整备份并上传到OSS（数据库 + 文件）
     * @return OSS文件信息
     */
    OssFileVO fullBackup();
    
    /**
     * 获取OSS上的备份文件列表
     * @return 备份文件列表
     */
    List<OssFileVO> listBackupFiles();
    
    /**
     * 清理过期备份文件
     * @param retentionDays 保留天数
     */
    void cleanupOldBackups(int retentionDays);
    
    /**
     * 从OSS下载备份文件并恢复数据库
     * @param ossKey OSS对象键
     * @return 是否成功
     */
    boolean restoreDatabase(String ossKey);
    
    /**
     * 删除OSS上的备份文件
     * @param ossKey OSS对象键
     * @return 是否成功
     */
    boolean deleteBackupFile(String ossKey);
}
